/**
 * 
 */
package com.proyecto.contratos.modelo.validacion;

import com.proyecto.contratos.modelo.dto.Contratos;
import com.proyecto.contratos.modelo.dto.ContratosId;
import com.proyecto.contratos.modelo.dto.ContratosModalidadesId;
import com.proyecto.contratos.modelo.dto.ContratosTiposId;
import com.proyecto.core.Utilidades.ObtenerFecha;
import com.proyecto.core.modelo.excepciones.GeneralException;
import com.proyecto.core.modelo.servicio.interfaces.IServicioTransaccion;
import com.proyecto.core.modelo.validacion.IValidacionServicio;

/**
 * @author vico
 *
 */
public class ValidacionServicioContratos implements IValidacionServicio {

	/**
	 * 
	 */
	IServicioTransaccion servicioTablaApoyoContratosTipos;
	IServicioTransaccion servicioTablaApoyoContratosModalidades;
	
	public ValidacionServicioContratos() {
		// TODO Auto-generated constructor stub
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#buscarCatalogoPorPropiedad(java.lang.String, java.lang.String)
	 */
	public void buscarCatalogoPorPropiedad(String atributo, String valor)
			throws GeneralException {
		// TODO Auto-generated method stub
		if (atributo == null || valor == null || atributo.equals("")
				|| valor.equals("")) {
			throw new GeneralException(
				"error.contratos.tablaApoyo.Contratos.buscarCatalogoXPropiedad.parametrosInvalidos");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#consultar(java.lang.Object)
	 */
	public void consultar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		ContratosId objContratosId = (ContratosId) o;
		if (objContratosId == null || objContratosId.getCiaopr() == null
				|| objContratosId.getCiaopr().trim().equals("")
				|| objContratosId.getContratocod() == null
				|| objContratosId.getContratocod().equals("")) {
			throw new GeneralException(
					"error.contratos.tablaApoyo.Contratos.consulta.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#consultarTodos(java.lang.Object)
	 */
	public void consultarTodos(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		if (o == null) {
			throw new GeneralException(
					"error.contratos.tablaApoyo.Contratos.consulta.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#eliminar(java.lang.Object)
	 */
	public void eliminar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		Contratos objContratos = (Contratos) o;
		if (objContratos == null || objContratos.getId().getCiaopr() == null
				|| objContratos.getId().getCiaopr().trim().equals("")
				|| objContratos.getId().getContratocod() == null
				|| objContratos.getId().getContratocod().equals("")) {
			throw new GeneralException(
					"error.contratos.tablaApoyo.Contratos.eliminar.pkNull");
		}
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#incluir(java.lang.Object)
	 */
	public void incluir(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		Contratos objContratos = (Contratos) o;
		if (objContratos == null || objContratos.getId().getCiaopr() == null
				|| objContratos.getId().getCiaopr().trim().equals("")) {
			throw new GeneralException(
					"error.contratos.tablaApoyo.Contratos.incluir.pkNull");
		} 
		this.validaCampos(objContratos,true);
	}

	/* (non-Javadoc)
	 * @see com.proyecto.core.modelo.validacion.IValidacionServicio#modificar(java.lang.Object)
	 */
	public void modificar(Object o) throws GeneralException {
		// TODO Auto-generated method stub
		Contratos objContratos = (Contratos) o;
		if (objContratos == null || objContratos.getId().getCiaopr() == null
				|| objContratos.getId().getCiaopr().trim().equals("")
				|| objContratos.getId().getContratocod() == null
				|| objContratos.getId().getContratocod().equals("")) {
			throw new GeneralException(
					"error.contratos.tablaApoyo.Contratos.modificar.pkNull");
		} 
		this.validaCampos(objContratos,false);
	}

	public void validaCampos(Contratos objContratos, boolean validarExistenciaDato) throws GeneralException{
		//Validamos campos requeridos
		String campos = "";

		if (objContratos.getCntvalor() == null
				|| "".equals(objContratos.getCntvalor() )){
					campos = campos + "CpContratos.cntvalor;";
		}
		
		if (objContratos.getCnttipocod() == null
				|| "".equals(objContratos.getCnttipocod().trim() )){
					campos = campos + "CpContratos.cnttipocod;";
		}
		
		if (objContratos.getCntmodalidadcod() == null
				|| "".equals(objContratos.getCntmodalidadcod().trim() )){
			
		}else{
			
			if(objContratos.getCntmodalidadcod().equals("EVE")){
				
			}else{
				if (objContratos.getPorcentaje() == null
						|| "".equals(objContratos.getPorcentaje() )){
							campos = campos + "CpContratos.porcentaje;";
				}
			}	
		}
		
		if (objContratos.getCntfchini() == null
				|| "".equals(objContratos.getCntfchini().trim() )){
					campos = campos + "CpContratos.cntfchini;";
		}
		
		if (objContratos.getCntfchfin() == null
				|| "".equals(objContratos.getCntfchfin().trim() )){
					campos = campos + "CpContratos.cntfchfin;";
		}
		
		if (objContratos.getCntvigente() == null
				|| "".equals(objContratos.getCntvigente().trim() )){
					campos = campos + "CpContratos.cntvigente;";
		}
		
		if (objContratos.getCntobjeto() == null
				|| "".equals(objContratos.getCntobjeto().trim() )){
					campos = campos + "CpContratos.cntobjeto;";
		}
		
		if (objContratos.getCntmodalidadcod() == null
				|| "".equals(objContratos.getCntmodalidadcod().trim() )){
					campos = campos + "CpContratos.cntmodalidadcod";
		}
		
		
		if (!"".equals(campos)){
			throw new GeneralException("error.contratos.tablaApoyo.Contratistas.campos_obligatorios",campos);
		}	
		
		campos="";
		if (objContratos.getCntfchini() == null
				|| "".equals(objContratos.getCntfchini().trim() ) ||
				objContratos.getCntfchfin() == null
				|| "".equals(objContratos.getCntfchfin().trim() ) ){

		}else{
			if(ObtenerFecha.fechaMayor(objContratos.getCntfchini(), objContratos.getCntfchfin())){
				campos = campos + "CpContratos.cntfchini";
			}
		}

		if (!"".equals(campos)){
			throw new GeneralException("error.contratos.tablaApoyo.Contratistas.campos_fechaMayor",campos);
		}	
		
		if(objContratos.getCnttipocod() != null){			
			servicioTablaApoyoContratosTipos.consultar(new ContratosTiposId(objContratos.getId().getCiaopr(), objContratos.getCnttipocod()) );
		}
		
		if(objContratos.getCntmodalidadcod() != null){			
			servicioTablaApoyoContratosModalidades.consultar(new ContratosModalidadesId(objContratos.getId().getCiaopr(), objContratos.getCntmodalidadcod()) );
		}
		
	}

	public IServicioTransaccion getServicioTablaApoyoContratosModalidades() {
		return servicioTablaApoyoContratosModalidades;
	}

	public void setServicioTablaApoyoContratosModalidades(
			IServicioTransaccion servicioTablaApoyoContratosModalidades) {
		this.servicioTablaApoyoContratosModalidades = servicioTablaApoyoContratosModalidades;
	}

	public IServicioTransaccion getServicioTablaApoyoContratosTipos() {
		return servicioTablaApoyoContratosTipos;
	}

	public void setServicioTablaApoyoContratosTipos(
			IServicioTransaccion servicioTablaApoyoContratosTipos) {
		this.servicioTablaApoyoContratosTipos = servicioTablaApoyoContratosTipos;
	}
}
